﻿using GN.Pay.Application.GatewayApp.Dto.Input;
using GN.Pay.Application.GatewayApp.Dto.Output;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GN.Pay.Application.GatewayApp
{
    /// <summary>
    /// 银行卡应用服务
    /// </summary>
    public interface IBankCardAppService : IGatewayAppService
    {
        /// <summary>
        /// 商户银行卡列表
        /// </summary>
        /// <param name="input">输入</param>
        /// <returns></returns>
        [GatewayService(GatewayServiceName.MerchantMember.Merchant_Member_BankCrad_List)]
        List<BankCardOutput> MerchantMemberBankCardList(BankCardInput input);

        /// <summary>
        /// 商户银行卡列表
        /// </summary>
        /// <param name="applyId">申请Id</param>
        /// <returns></returns>
        List<BankCardOutput> MerchantMemberBankCardList(string applyId);

        /// <summary>
        /// 银行卡绑定申请
        /// </summary>
        /// <param name="input">输入</param>
        /// <returns></returns>
        [GatewayService(GatewayServiceName.MerchantMember.Merchant_Member_BankCrad_Bind_Apply)]
        MerchantMemberBankCardBindApplyOutput MerchantMemberBankCardBindApply(BankCardBindApplyInput input);

        /// <summary>
        /// 银行卡绑定
        /// </summary>
        /// <param name="input">输入</param>
        /// <returns></returns>
        MerchantMemberBankCardBindApplyOutput MerchantMemberBankCardBindApply(BankCardBindPayApplyInput input);

        /// <summary>
        /// 银行卡绑定
        /// </summary>
        /// <param name="input">输入</param>
        /// <returns></returns>
        [GatewayService(GatewayServiceName.MerchantMember.Merchant_Member_BankCrad_Bind)]
        BankCardOutput MerchantMemberBankCardBind(MerchantMemberBankCardBindInput input);
    }
}
